var QueryForm; // 查询表单
var DetailWXForm; // 资产维修详情表单
var QueryWindow; // 查询窗口
var DetailWXWindow; // 资产维修详细信息窗口
var WXGridPanel;
var WXStore, Query; // 存放查询数据的表格的存贮变量

/*
 * 建立查询资产维修信息的窗口 --- 存放QueryForm
 */
var BuildQueryWindow = function() {
	QueryWindow = new Ext.Window({
				title : '~ 查询窗口(请选择查询条件) ~',
				width : 600,
				heigth : 400,
				resizable : false,
				modal : true,
				closeAction : 'hide',
				items : [QueryForm],
				buttons : [{
							iconCls : 'query',
							text : '查询',
							handler : Query
						}, {
							iconCls : 'empty',
							text : '清空',
							handler : function() {
								QueryForm.getForm().reset();
							}
						}],
				buttonAlign : 'center'
			})
}

/*
 * 建立查询资产维修信息的布局
 */
var BuildQueryForm = function() {
	QueryForm = new Ext.form.FormPanel({
		labelAlign : 'right',
		labelWidth : 70,
		width : '100%',
		bodyStyle : 'padding:20px 10px;',
		items : [{
			layout : 'column',
			border : false,
			items : [{
						bodyStyle : 'padding-top:5px',
						columnWidth : .5,
						layout : 'form',
						defaults : {
							width : 130
						},
						defaultType : 'textfield',
						items : [{
									fieldLabel : '资产编号',
									name : 'assetNo'
								}, {
									fieldLabel : '设备名称',
									name : 'name'
								}]
					}, {
						bodyStyle : 'padding-top:5px',
						columnWidth : .5,
						style : 'margin-left: 15px;',
						layout : 'form',
						defaults : {
							width : 130
						},
						defaultType : 'textfield',
						items : [{
							fieldLabel : '使用部门',
							name : 'department',
							xtype : 'combo',
							store : new Ext.data.Store({
										proxy : new Ext.data.HttpProxy({
													url : '/FAM/DictInfoServlet'
												}),// 从数据库取数据 -- 未完成
										reader : new Ext.data.JsonReader({
													root : 'department'
												}, ['name']), // 匹配数据库中的字段
										autoLoad : false
									}),
							emptyText : '请选择',
							mode : 'remote',
							triggerAction : 'all',
							valueField : 'name', // text应该与数据库中的字段相同，暂时用text替代
							displayField : 'name',
							readOnly : true
						}, {
							fieldLabel : '维修级别',
							name : 'level',
							xtype : 'combo',
							store : new Ext.data.SimpleStore({
										fields : ['text'],
										data : [['日常维护'], ['大修'], ['故障维修'],
												['其他']]
									}),
							emptyText : '请选择',
							mode : 'local',
							triggerAction : 'all',
							valueField : 'text',
							displayField : 'text',
							readOnly : true
						}]
					}]
		}]
	})
}

/*
 * 通过查询条件连接数据库得到数据 --- 未完成
 * 
 */
Query = function() {
	WXStore.baseParams['start'] = '0';
	WXStore.baseParams['limit'] = '15';
	WXStore.baseParams['assetNo'] = QueryForm.form.findField('assetNo')
			.getValue();
	WXStore.baseParams['name'] = QueryForm.form.findField('name').getValue();
	WXStore.baseParams['department'] = QueryForm.form.findField('department')
			.getValue();
	WXStore.baseParams['level'] = QueryForm.form.findField('level').getValue();
	QueryWindow.hide();
	WXStore.load();

}

/*
 * 建立存放资产维修信息的布局
 */
var BuildWXGrid = function() {
	var WXColumnModel = new Ext.grid.ColumnModel([new Ext.grid.RowNumberer(), {
				header : '资产编号',
				sortable : true,
				dataIndex : 'assetNo'
			}, {
				header : '设备名称',
				sortable : true,
				dataIndex : 'name'
			}, {
				header : '规格型号',
				sortable : true,
				dataIndex : 'model'
			}, {
				header : '使用部门',
				sortable : true,
				dataIndex : 'department'
			}, {
				header : '维修级别',
				sortable : true,
				dataIndex : 'level'
			}, {
				header : '维修时间',
				sortable : true,
				dataIndex : 'time',
				type : 'date',
				renderer : Ext.util.Format.dateRenderer('Y年m月d日')
			}, {
				header : '维修天数',
				sortable : true,
				dataIndex : 'days'
			}, {
				header : '材料费',
				sortable : true,
				dataIndex : 'materialMoney'
			}, {
				header : '维修工资费',
				sortable : true,
				dataIndex : 'laborageMoney'
			}, {
				header : '合计费用',
				sortable : true,
				dataIndex : 'maintainMoney'
			}]);

	var WXRecord = new Ext.data.Record.create([{
				name : 'assetNo'
			}, {
				name : 'name'
			}, {
				name : 'model'
			}, {
				name : 'department'
			}, {
				name : 'level'
			}, {
				name : 'time',
				type : 'date',
				dateFormat : 'Y-m-d H:i:s'
			}, {
				name : 'days'
			}, {
				name : 'constructUnit'
			}, {
				name : 'reason'
			}, {
				name : 'material'
			}, {
				name : 'materialMoney'
			}, {
				name : 'laborageMoney'
			}, {
				name : 'maintainMoney'
			}, {
				name : 'remark'
			}]);

	WXStore = new Ext.data.Store({
				// 访问资产维修统计
				proxy : new Ext.data.HttpProxy({
							url : '/FAM/getMaintenanceStatisticsServlet'
						}),
				reader : new Ext.data.JsonReader({
							root : 'result',
							totalProperty : 'total'
						}, WXRecord)
			});

	WXGridPanel = new Ext.grid.GridPanel({
				width : '100%',
				height : 500,
				layout : 'fit',
				store : WXStore,
				cm : WXColumnModel,
				stripeRows : true,
				loadMask : true,
				viewConfig : {
					forceFit : true
				},
				plugins : new Ext.ux.PanelResizer({
							minHeight : 100
						}),
				tbar : ['查询的设备维修信息(提示：~^0^~ 双击表格中的某行可以查看该行的详情 ~^0^~)', '->', {
							iconCls : 'query',
							text : ' 查  询',
							width : 100,
							style : 'margin-right:20px;',
							tooltip : '查询设备维修统计信息',
							handler : function() {
								QueryWindow.show();
							}
						}],
				bbar : new Ext.PagingToolbar({
							pageSize : 15,
							store : WXStore,
							displayInfo : true,
							plugins : new Ext.ux.ProgressBarPager()
						})
			});

	WXGridPanel.addListener('rowdblclick', function(WXGridPanel, rowIndex,
			event) // 将MaintainGridPanel的数据加载到UpdataFormPanel中
			{
				var record = WXGridPanel.getStore().getAt(rowIndex);
				DetailWXWindow.show();
				DetailWXForm.getForm().loadRecord(record);
			});
}

/*
 * 双击表格行的时候存放资产维修详细信息的布局
 */
var BuildDetailWXForm = function() {
	DetailWXForm = new Ext.form.FormPanel({
				frame : true,
				width : '100%',
				autoHeight : true,
				labelAlign : 'right',
				labelWidht : 70,
				items : [{
							layout : 'column',
							items : [{
										columnWidth : .5,
										layout : 'form',
										xtype : 'fieldset',
										title : '资产维修信息',
										autoHeight : true,
										width : 300,
										defaults : {
											disabled : true,
											width : 150
										},
										defaultType : 'textfield',
										items : [{
													fieldLabel : '资产编号',
													name : 'assetNo'
												}, {
													fieldLabel : '设备名称',
													name : 'name'
												}, {
													fieldLabel : '使用部门',
													name : 'department'
												}, {
													fieldLabel : '设备型号',
													name : 'model'
												}, {
													fieldLabel : '维修级别',
													name : 'level'
												}, {
													fieldLabel : '维修材料',
													name : 'material'
												}]
									}, {
										columnWidth : .5,
										layout : 'form',
										xtype : 'fieldset',
										title : '资产维修信息',
										autoHeight : true,
										width : 300,
										style : 'margin-left: 30px;',
										defaults : {
											disabled : true,
											width : 150
										},
										defaultType : 'textfield',
										items : [{
													fieldLabel : '维修时间',
													name : 'time',
													xtype : 'datefield',
													format : 'Y-m-d'
												}, {
													fieldLabel : '施工单位',
													name : 'constructUnit'
												}, {
													fieldLabel : '维修天数',
													name : 'days'
												}, {
													fieldLabel : '材料费用(RMB)',
													name : 'materialMoney'
												}, {
													fieldLabel : '维修工资费(RMB)',
													name : 'laborageMoney'
												}, {
													fieldLabel : '维修合计(RMB)',
													name : 'maintainMoney'
												}]
									}]
						}, {
							xtype : 'fieldset',
							title : '资产维修信息',
							defaults : {
								disabled : true,
								labelWidth : 50
							},
							autoHeight : true,
							items : [{
										fieldLabel : '维修原因',
										width : 500,
										height : 25,
										xtype : 'textarea',
										name : 'reason'
									}, {
										fieldLabel : '备注信息',
										width : 500,
										height : 25,
										xtype : 'textarea',
										name : 'remark'
									}]
						}]
			})
}

/*
 * 建立存放详细资产维修信息的布局
 */
var BuildDetailWXWindow = function() {
	DetailWXWindow = new Ext.Window({
				title : '设备维修统计信息(查看模式)',
				width : 670,
				height : 360,
				resizable : false,
				modal : true,
				closeAction : 'hide',
				items : [DetailWXForm],
				buttons : [{
							iconCls : 'back',
							text : '返回',
							handler : function() {
								DetailWXWindow.hide();
							}
						}]
			})
}

/*
 * viewPort布局
 */
var BuildLayout = function() {
	new Ext.Viewport({
				layout : 'border',
				items : [{
							region : 'center',
							layout : 'fit',
							items : [WXGridPanel]
						}]
			})
}

/*
 * 初始化各个界面的布局
 */
var init = function() {
	Ext.QuickTips.init();
	Ext.form.Field.prototype.msgTarget = 'side';

	BuildQueryForm();
	BuildDetailWXForm();
	BuildQueryWindow();
	BuildDetailWXWindow();
	BuildWXGrid();
	BuildLayout();
	QueryWindow.show();
}

Ext.onReady(init);